using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Collections;
using System.Collections.Generic;

/// <summary>
/// Summary description for EntregablesCtrl
/// </summary>
public class EntregablesCtrl
{
	private EntregablesBD bdEntregables;
    private static EntregablesEnt entEntregable;
    private AtributosCtrl atributos;

    public EntregablesCtrl()
    {
        this.bdEntregables = new EntregablesBD();
        this.atributos = new AtributosCtrl();
    }

    //Obtiene y retorna un dataTable con la informacion de entregables
    public DataTable ActualizarGrid()
    {
        return this.bdEntregables.ConsultarEntregables();
    }
    //Recibe el id de un entregable y consulta el entregable con ese id almacenando los datos
    //en un objeto entidad y retorna ese objeto con la informacion del entregable consultado
    public EntregablesEnt ConsultarEntregable(int id) 
    {
        entEntregable = this.bdEntregables.ConsultarEntregable(id);
        return entEntregable;
    }
    //Encapsula los datos del nuevo entregable( nombre y descripcion ) creando un nuevo objeto 
    //entidad de entregable y envia el objeto como parametro al metodo InsertarEntregable de la controladora
    //de base de datos. Retorna true si se realizo la insercion con exito y false en caso contrario
    public bool InsertarEntregable(string nombre, string descripcion)
    {
        EntregablesEnt Entregable = new EntregablesEnt(nombre, descripcion);
        return this.bdEntregables.InsertarEntregable(Entregable);
    }
    //Se llama al metodo eliminar de la controladora base de datos enviado como parametro
    //el id del ultimo entregable consultado.Retorna true si se realizo la eliminacion con exito 
    //y false en caso contrario
    public bool EliminarEntregable()
    {
        return this.bdEntregables.EliminarEntregable(entEntregable.Id);
    }
    //Encapsula los datos recibidos por parametro junto con el ID del ultimo entregable
    //consultado y envia el objeto creado como parametro al metodo ActuliazarEntregable de 
    //controladora de base de datos. Retorna true si se realizo la modificacion con exito 
    //y false en caso contrario
    public bool ActualizarEntregable(string nombre, string descripcion)
    {
        EntregablesEnt Entregable = new EntregablesEnt(entEntregable.Id, nombre, descripcion);
        return this.bdEntregables.ActualizarEntregable(Entregable);
    }
    //Retorna todos los atributos de modulo
    public AtributosCtrl SolicitarEstadoAtributos()
    {
        return this.atributos;
    }
    //Realiza la accion correspondiente al estado en el que se encuentra
    //segun el primer parametro, si es true modifica de lo contario inserta.
    //Retorna true si la operacion realizada fue exitosa y false en caso contrario
    public bool AccionesAceptar (bool modificando, string nombre, string descripcion) {
        bool resultado;

        if(modificando) {
            resultado = this.ActualizarEntregable(nombre, descripcion);
        }
        else {
            resultado = this.InsertarEntregable(nombre, descripcion);
        }

        return resultado;
    }


    public List<EntregablesEnt> RecuperarEntregables()
    {
        return bdEntregables.RecuperarEntregables();
    }



}
